<?php 
/**
* token 类
* 做什么? 自动获取token 存缓存 
*/

namespace token;


class Token
{	
	public static $tokenFile = 'token.txt';
	public static $tokenExpireTime = 3600;


	// 入口 方法 返回的token
	public static function getToken()
	{	
		// 判断 缓存 1是否存在  2过期
		if ( !self::checkTokenFileExists() || self::checkTokenFileExpire() ) {
			// 缓存不合法
			// 请求缓存 更新缓存
			$token = self::requestToken();
			self::writeToken($token);
			return $token;
		}else {
			// 缓存合法
			// 读取缓存
			return self::readToken();		
			
		}
		// return $token;
	}

	public static function requestToken()
	{
		// 发送get请求
		$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxc32cf722a2263e34&secret=3d998bcf3fd26dc1955662a54f0cedd2';
		//发送get请求
		$res = https_request($url);
		// 得到的是json
		// 拿出token
		$data = json_decode($res,true);
		$token = $data['access_token'];
		return $token;
	}

	public static function writeToken($token)
	{
		file_put_contents(self::$tokenFile, $token);
	}

	public static function readToken()
	{
		return file_get_contents(self::$tokenFile);
	}

	// 存在
	public static function checkTokenFileExists()
	{
		return file_exists(self::$tokenFile);
	}

	// 过期
	public static function checkTokenFileExpire()
	{
		// 算法
		// 7天
		// 生成日期 3.24 cd 7天    今天 3.27  没有过期
		// 3.24 + 7 (3.31)   <  day  过期

		// 现在的时间 time()
		// cd self::$tokenFileExpireTime
		// 最后修改时间(缓存文定时修改,更新所以使用最后修改时间)
		// filemtime
		
		return filemtime(self::$tokenFile) + self::$tokenExpireTime < time();
	}
}

























 ?>